import { defineStore } from "pinia";
// 引入接口
import { reqLogin, reqLogout, reqUserInfo } from '@/api/lgoin'
//定义对象的类型(接口)
import type { UserInfoState } from './interface-wzx';
//封装三个函数:获取本地存储token|移出本地存储token|本地持久化存储token
import { getToken, removeToken, setToken } from '@/utils/saveToken'

// 在pinia中state存储仓库数据
export const useUserInfoStore = defineStore('userInfo', {
    state: (): UserInfoState => ({
        token: '',
        phone: '',
        code: '',
        password: '',
        name: ''
    }),
    actions: {
        // 登录请求
        // 参数：phone,password
        async login(phone: string, password: string) {
            // 用户登录成功，返回唯一标识
            try {
                let res = await reqLogin({ phone, password })
                // 存储唯一标识token
                this.token = res.data.token
                console.log(res);
                // 存储个人用户信息
                this.name = res.data.name
                // 本地化持久存储token
                setToken(res.data.token)
                // 登录成功返回ok
                return 'ok'
            } catch (error) {
                return Promise.reject(error)
            }
        },
        // 获取个人信息
        async getInfo() {
            try {
                let res = await reqUserInfo();
                // console.log(res);
                this.name = res.data.name
            } catch (error) {
                return Promise.reject(error)
            }

        },
        // 退出登录
        async logout(){
            try {
                // 当前token退出登录，不需要了
                await reqLogout();
                // 删除local中的token
                removeToken();
                // 清空pinia的数据
                this.token = ''
                this.name = ''
                return 'ok'
            } catch (error) {
                return Promise.reject(error)
            }
        }
    }

})